package main

import (
	"fmt"
	"github.com/spf13/viper"
)

//如何将线上和线下的配置文件隔离
//不用改任何代码而且线上和线上的配置文件能隔离开

type MysqlConfig struct {
	Host string `mapstructure:"host"`
	Port int    `mapstructure:"port"`
}

type ServerConfig struct {
	ServiceName string      `mapstructure:"name"`
	MysqlInfo   MysqlConfig `mapstructure:"mysql"`
}

func GetEnvInfo(env string) bool {
	viper.AutomaticEnv()
	return viper.GetBool(env)
	//刚才设置的环境变量 想要生效 我们必须得重启goland
}

func main() {
	fmt.Println(string(byte(19)))
	//debug := GetEnvInfo("MXSHOP_DEBUG")
	//configFilePrefix := "config"
	//configFileName := fmt.Sprintf("g_viper_develop/ch02/%s-pro.yaml", configFilePrefix)
	//if debug {
	//	configFileName = fmt.Sprintf("g_viper_develop/ch02/%s-debug.yaml", configFilePrefix)
	//}
	//
	//v := viper.New()
	////文件的路径如何设置
	//v.SetConfigFile(configFileName)
	//if err := v.ReadInConfig(); err != nil {
	//	panic(err)
	//}
	//serverConfig := ServerConfig{}
	//if err := v.Unmarshal(&serverConfig); err != nil {
	//	panic(err)
	//}
	//fmt.Println(serverConfig)
	//fmt.Printf("%V", v.Get("name"))
	//
	////viper的功能 - 动态监控变化
	//v.WatchConfig()
	//v.OnConfigChange(func(e fsnotify.Event) {
	//	fmt.Println("config file channed： ", e.Name)
	//	_ = v.ReadInConfig()
	//	_ = v.Unmarshal(&serverConfig)
	//	fmt.Println(serverConfig)
	//})
	//
	//time.Sleep(time.Second * 300)
}
